package com.reflect.demo03;

public class Test {
    public static void main(String[] args) {
        System.out.println("类加载过程");
        /**
         * 1.加载：把类加载到内存 产生一个类对应的class对象
         * 2.链接：链接结束 m = 0
         * 3.初始化：执行构造方法
         *  <clinit>(){
         *      System.out.println("静态代码块！");
         *      m = 300;
         *      m = 100;
         *  }
         *   300 被 100 覆盖了
         *   所以打印出来的 m 就是 100了
         */
        A a = new A();
        System.out.println(a.m);
    }
}

class A{
    // static int m = 100; 放在前面 m 打印就是 300
    static {
        System.out.println("静态代码块！");
        m = 300;
    }
    static int m = 100; // 放在后面 m 打印就是 100
    public A() {
        System.out.println("构造方法！");
    }
}
